package com.scalar.chiptrack.operations.dataentry.lotTransfer.actioncommands;

import com.scalar.chiptrack.actioncommands.ActionCommand;
import com.scalar.chiptrack.operations.dataentry.lotTransfer.forms.TransferMaterialForm;
import com.scalar.chiptrack.operations.process.dao.NewProductDAO;
import com.scalar.chiptrack.users.User;
import com.scalar.chiptrack.users.Functionality;
import com.scalar.chiptrack.commons.SessionKeys;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;


public class TransferMaterialLoadProcessTypesCommand extends ActionCommand
{

    private static final String ACTION_NAME = "/transferMaterial.do";

    public ActionForward execute( ActionMapping mapping,
                                  ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response ) throws Exception
    {

        TransferMaterialForm transferMaterialForm = ( TransferMaterialForm )form;

        HashMap<String,String> errors   = new HashMap<String,String>();
        HashMap<String,String> info     = new HashMap<String,String>();
        String action = request.getParameter ( "action" );

        request.setAttribute( INFO_MESSAGES, info );
        request.setAttribute( ERROR_MESSAGES, errors );


        HttpSession mSession              = request.getSession();
        User user                         = ( User ) mSession.getAttribute ( SessionKeys.USER_KEY );

        if ( user == null )
        {
            mSession.setAttribute ( SessionKeys.SOURCE_PAGE_KEY,  ACTION_NAME );
            return ( mapping.findForward ( "login" ) );
        }
        else
        {
            if ( user.isActionAllowed ( Functionality.TRANSFER_MATERIAL , User.USER_ACTION_MODIFY ) )
            {
                request.setAttribute ( "showMessage", "FALSE" );
            }
            else
            {
                request.setAttribute ( "showMessage", "TRUE" );
            }
        }

        try
        {

            transferMaterialForm.setProcessType( "0" );
            transferMaterialForm.setProcessStepId( 0 ) ;
            transferMaterialForm.setLocationId( 0 );
            transferMaterialForm.setLotId(0 );
            transferMaterialForm.setWipLotsList( null );
            
            request.setAttribute( "processTypes", NewProductDAO.loadAllProcessesFromDB(null, false));
            request.setAttribute( "action", action );
        }
        catch( Exception e )
        {
            e.printStackTrace();
        }

        return mapping.findForward( "transferMaterial" );

    }


}